/**
 * 状态码与状态文本转换工具
 */

// 维修任务状态常量
export const REPAIR_TASK_STATUS = {
  PENDING: {
    code: 1,
    text: '待处理'
  },
  PROCESSING: {
    code: 2,
    text: '处理中'
  },
  COMPLETED: {
    code: 3,
    text: '已完成'
  }
};

/**
 * 将维修任务状态文本转换为状态码
 * @param {String} statusText 状态文本
 * @returns {Number} 状态码
 */
export function repairTaskStatusToCode(statusText) {
  if (statusText === REPAIR_TASK_STATUS.PENDING.text) {
    return REPAIR_TASK_STATUS.PENDING.code;
  } else if (statusText === REPAIR_TASK_STATUS.PROCESSING.text) {
    return REPAIR_TASK_STATUS.PROCESSING.code;
  } else if (statusText === REPAIR_TASK_STATUS.COMPLETED.text) {
    return REPAIR_TASK_STATUS.COMPLETED.code;
  }
  return REPAIR_TASK_STATUS.PENDING.code; // 默认为待处理
}

/**
 * 将维修任务状态码转换为状态文本
 * @param {Number} statusCode 状态码
 * @returns {String} 状态文本
 */
export function repairTaskCodeToStatus(statusCode) {
  if (statusCode === REPAIR_TASK_STATUS.PENDING.code) {
    return REPAIR_TASK_STATUS.PENDING.text;
  } else if (statusCode === REPAIR_TASK_STATUS.PROCESSING.code) {
    return REPAIR_TASK_STATUS.PROCESSING.text;
  } else if (statusCode === REPAIR_TASK_STATUS.COMPLETED.code) {
    return REPAIR_TASK_STATUS.COMPLETED.text;
  }
  return REPAIR_TASK_STATUS.PENDING.text; // 默认为待处理
}

/**
 * 根据时间自动计算维修状态
 * @param {String} actualStartTime 实际开始时间 (YYYY-MM-DD 或 YYYY-MM-DD HH:mm:ss)
 * @param {String} actualEndTime 实际结束时间 (YYYY-MM-DD 或 YYYY-MM-DD HH:mm:ss)
 * @returns {Object} 包含状态码和状态文本的对象
 */
export function calculateRepairStatus(actualStartTime, actualEndTime) {
  const today = new Date();
  today.setHours(0, 0, 0, 0); // 设置为当天的0点0分0秒
  
  // 处理日期，无论是否有时间部分都能正确解析
  let startDate = null;
  let endDate = null;
  
  if (actualStartTime) {
    // 提取日期部分
    const startDateStr = actualStartTime.split(' ')[0];
    startDate = new Date(startDateStr);
    startDate.setHours(0, 0, 0, 0);
  }
  
  if (actualEndTime) {
    // 提取日期部分
    const endDateStr = actualEndTime.split(' ')[0];
    endDate = new Date(endDateStr);
    endDate.setHours(0, 0, 0, 0);
  }
  
  // 如果有结束时间，那么状态为"已完成"
  if (endDate) {
    return {
      code: REPAIR_TASK_STATUS.COMPLETED.code,
      text: REPAIR_TASK_STATUS.COMPLETED.text
    };
  }
  
  // 如果有开始时间，且当前日期大于等于开始日期，那么状态为"处理中"
  if (startDate && today >= startDate) {
    return {
      code: REPAIR_TASK_STATUS.PROCESSING.code,
      text: REPAIR_TASK_STATUS.PROCESSING.text
    };
  }
  
  // 默认为"待处理"
  return {
    code: REPAIR_TASK_STATUS.PENDING.code,
    text: REPAIR_TASK_STATUS.PENDING.text
  };
} 